package com.media.system.service;

import com.media.system.domain.MediaFile;
import com.media.system.service.dto.AiTagResult;

import java.util.List;

/**
 * AI标签识别服务接口
 * 
 * @author Claude
 * @since 2024-01-20
 */
public interface AiTagService {

    /**
     * 识别图片内容标签
     * 
     * @param mediaFile 媒体文件
     * @return AI标签结果
     */
    AiTagResult recognizeImageTags(MediaFile mediaFile);

    /**
     * 识别视频内容标签
     * 
     * @param mediaFile 媒体文件
     * @return AI标签结果
     */
    AiTagResult recognizeVideoTags(MediaFile mediaFile);

    /**
     * 识别音频内容标签
     * 
     * @param mediaFile 媒体文件
     * @return AI标签结果
     */
    AiTagResult recognizeAudioTags(MediaFile mediaFile);

    /**
     * 批量处理AI标签识别
     * 
     * @param mediaFiles 媒体文件列表
     * @return 处理结果
     */
    List<AiTagResult> batchRecognizeTags(List<MediaFile> mediaFiles);

    /**
     * 获取推荐标签
     * 
     * @param userId 用户ID
     * @param fileType 文件类型
     * @return 推荐标签列表
     */
    List<String> getRecommendedTags(Long userId, String fileType);

    /**
     * 获取热门标签
     * 
     * @param limit 数量限制
     * @return 热门标签列表
     */
    List<String> getPopularTags(Integer limit);

    /**
     * 智能分类文件到相册
     * 
     * @param mediaFiles 媒体文件列表
     * @return 分类结果
     */
    List<String> smartClassifyToAlbums(List<MediaFile> mediaFiles);

    /**
     * 检测重复或相似文件
     * 
     * @param mediaFile 媒体文件
     * @return 相似文件列表
     */
    List<MediaFile> detectSimilarFiles(MediaFile mediaFile);

    /**
     * 内容安全检测
     * 
     * @param mediaFile 媒体文件
     * @return 是否安全
     */
    boolean contentSafetyCheck(MediaFile mediaFile);
}